package xiangya.bysj.mapper.interf;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import xiangya.bysj.entity.HistoryTake;

public interface HistoryTakeMapper extends MapperInterface<HistoryTake> {
	/**
	 * 根据分页查询
	 * 
	 * @param from
	 *            开始的位置
	 * @param number
	 *            需要查询的条数
	 * @param patientIds
	 *            患者id数组
	 * @return 返回历史记录的集合
	 * @throws Exception
	 */
	public List<HistoryTake> selectByPage(@Param("from") int from, @Param("number") int number,
			@Param("patientIds") int[] patientIds) throws Exception;

	/**
	 * 批量添加
	 * 
	 * @param list
	 *            集合
	 * @return 成功条数
	 * @throws Exception
	 */
	public int saveBatch(List<HistoryTake> list) throws Exception;

	/**
	 * 根据患者id查询当天的服药记录
	 * 
	 * @param patientId
	 *            患者id
	 * @param today
	 *            当天
	 * @return list集合
	 * @throws Exception
	 */
	public List<HistoryTake> selectTodayRecByPatientId(@Param("patientId") int patientId, @Param("today") String today)
			throws Exception;

	/**
	 * 根据患者的id数组获取（获取当天）
	 * 
	 * @param patientIds
	 *            患者id数组
	 * @param today
	 *            当天时间
	 * @return list集合
	 * @throws Exception
	 */
	public List<HistoryTake> selectByPatients(@Param("patientIds") int[] patientIds, @Param("today") String today)
			throws Exception;

	/**
	 * 获取患者的所有服药记录
	 * 
	 * @param patientIds
	 *            患者id数组
	 * @return 服药记录的list集合
	 * @throws Exception
	 */
	public List<HistoryTake> selectAllByPatients(int[] patientIds) throws Exception;

	/**
	 * 根据患者删除其对应药品的服药信息（如果药品id为0或者小于0，那么删除该患者所有的）
	 * 
	 * @param patientId
	 *            患者id（必须）
	 * @param medicId
	 *            药品id（非必须）
	 * @return
	 * @throws Exception
	 */
	public int deleteByPatient(@Param("patientId") int patientId, @Param("medicId") int medicId) throws Exception;

	/**
	 * 根据患者和药品id获取有多少条服药记录
	 * 
	 * @param patientId
	 *            患者id'
	 * @param medicId
	 *            药品id
	 * @return 条数
	 * @throws Exception
	 */
	public int selectNumberByPatient(@Param("patientId") int patientId, @Param("medicId") int medicId) throws Exception;

	/**
	 * 根据患者、药品 通过日期、心得分组查询
	 * 
	 * @param patientId
	 *            患者id
	 * @param medicId
	 *            药品id
	 * @return list集合 （这里只会放回三个数据：日期、心得、改日期下服药次数‘histStatus’）
	 * @throws Exception
	 */
	public List<HistoryTake> selectByPatient(@Param("patientId") int patientId, @Param("medicId") int medicId)
			throws Exception;

	/**
	 * 跟新服药心得
	 * 
	 * @param patientId
	 *            患者id
	 * @param medicId
	 *            药品id
	 * @param record
	 *            心得
	 * @param date
	 *            日期
	 * @return
	 * @throws Exception
	 */
	public int updateRecord(@Param("patientId") int patientId, @Param("medicId") int medicId,
			@Param("record") String record, @Param("date") String date) throws Exception;

	/**
	 * 通过服药信息的id，删除今天还没有服用的历史记录
	 * 
	 * @param tkId
	 *            服药信息id
	 * @return 删除条数
	 * @throws Exception
	 */
	public int deleteTodayByTk(@Param("tkId") int tkId, @Param("today") String today) throws Exception;

	public int selectHistCountByPatient(int patientid);

	public List<HistoryTake> selectByPatientId(@Param("patientId")int patientid,@Param("offset")int offset);
	
	
}
